package com.gong.gongcloudpicture1.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 全局跨域配置
 */
// 加上Configuration该注解表示当前类是一个配置类
@Configuration
// 这里需要实现一个WebMvcConfigurer里的一个方法addCorsMappings()
public class CorsConfig implements WebMvcConfigurer {

    /**
     * 配置跨域访问规则
     * @param registry 用于注册跨域规则的注册器
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 覆盖所有请求路径（/** 表示匹配所有路径）
        registry.addMapping("/**")
                // 使用 allowedOriginPatterns 替代 allowedOrigins
                // 原因：当 allowCredentials 为 true 时，allowedOrigins 不能使用通配符 *
                // allowedOriginPatterns 支持更灵活的匹配模式（如正则表达式）
                // 允许所有来源的跨域请求（* 表示任意域名）
                //.allowedOrigins("*")
                .allowedOriginPatterns("*")
                // 允许发送 Cookie（如需要携带认证信息）
                .allowCredentials(true)
                // 允许的 HTTP 方法（GET, POST 等）
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                // 允许的请求头（* 表示允许所有头信息）
                .allowedHeaders("*")
                // 暴露给前端的响应头（* 表示暴露所有头信息）
                .exposedHeaders("*");
    }
}
